macro は reflection と meta programming を區別しない
自己反映計算 (reflection) と meta programming ともう一つあった氣がするんだよな
introspection???
reflection と introspection
ではなかった
macroとinterfaceは「なんだか逆だ」 - c4se記:さっちゃんですよ☆
macro は 自己反映計算 (reflection) (觀測) と meta programming (操作) を混淆 (complect) してゐる
Lisp と RubyRuby.icon との雙對性を考へてる
command-query 責務分離 (CQRS) 出來てない
實行時での分離は簡單。compile 時に分離するには?
先例
macro っぽいやつ
Lisp macro
AST macro
Lisp 一族、ElixirElixir.icon、CrystalCrystal.icon、いっぱいある
C# の annotation
JavaJava.iconにもある
PythonPython.iconのは實行時 (下記)
C macro
text macro
m4
PHPPHP.iconで PHPPHP.iconの code を生成する
e.g. Ranyuen/DI
C++ template。constexpr
GroovyGroovy.icon の AST 變換
ScalaScala.iconにもある
BER Meta OCamlOCaml.icon
時相論理
實行時 reflection っぽいやつ
自己反映計算 (reflection)
JavaJava.icon、RubyRuby.icon、いっぱいある
觀測結果に依り動作を變へる
reflective tower
實行時 meta programming っぽいやつ
自己書き換へ系 (self-modifying code)
open class
RubyRuby.icon
ECMAScriptECMAScript.icon。LuaLua.icon
hooks
RubyRuby.icon
AspectJJava.icon
PythonPython.icon の annotation
ErlangErlang.icon の code module